using System;
using Waaahsabi.Controls.TheGame;

namespace TheGameClient.Processes
{
	public interface IProgram : IProcess
	{
		ulong ProgramId { get; set; }
		ProgramState State { get; }
		Int32 Version { get; set; }
		GenericTargetingControl Control { get; }
		bool IsInitialized { get; }
		void Initialize(); //initializes the program with all pre-set properties
		void Execute(); //contains specific code that will be run when all prerequisites are met (source & target selected etc)
		void SetOperationResult(bool successful); //this is the notification method for the signal path coming back from the GenericSystemInterface. See sequence diagram.
	}

	public enum ProgramState
	{
		None,
		SourceSelected,
		Busy,
		Finished
	}

	public enum ProgramDropState
	{
		None,
		SourceSelected,
		Busy
	}

}